#ifndef CVMEXCEPTION_H
#define	CVMEXCEPTION_H

#include <QString>
#include "../utils/CException.h"

class CCoreException : public CException
{
public:
    CCoreException(const QString& message, const QString& info) : CException(message + info) {}
    CCoreException(const QString& message) : CException(message) {}

    static constexpr auto VM_EXCEPTION_WRONG_OPERATION = "VMException - Wrong operation!\n";
    static constexpr auto VM_EXCEPTION_WRONG_OPERAND = "VMException - Wrong operand!\n";
    static constexpr auto VM_EXCEPTION_INSUFFICIENT_OPERANDS = "VMException - Insufficient operands!\n";
    static constexpr auto VM_EXCEPTION_UNEXPECTED_END_OF_INPUT = "VMException - Unexpected end of input!\n";
    static constexpr auto VM_EXCEPTION_NULL_POINTER = "VMException - null pointer!\n";

    static constexpr auto COMPILER_EXCEPTION_WRONG_OPERATION = "CompilerException - Wrong operation!\n";
    static constexpr auto COMPILER_EXCEPTION_WRONG_OPERAND = "CompilerException - Wrong operand!\n";
    static constexpr auto COMPILER_EXCEPTION_MISSING_OPERAND = "CompilerException - Missing operand!\n";
};

#endif
